
// 导入express
var express = require('express');
// 模块化
var router = express.Router();
// 导入获取请求体的模板
const request=require('./../../model/获取请求体')
//导入集合_model
const register = require('../../model/注册信息集合')
//使用register方法返回的对象
const regModel = register.register();
// 导入处理时间的包moment
const moment = require('moment');
require('moment-timezone');
const currentDate = moment();
// 导入密码加密的包
const md5=require('md5');
//导入查找数据库中的用户名是否存在的方法
const find_model = require('../../model/find_model');



/* 添加账本的GET路由表单 */
// 登录页面路由
router.get('/login', function (req, res, next) {
    res.render('auth/login', {title: '登录'});
});
// 登录页面注册的路由
router.get('/reg', function (req, res, next) {
    res.render('auth/reg', {title: '注册'});
});

// 注册表单点击注册按钮的路由
router.post('/reg', function (req, res, next) {

    //调用函数获取请求体
    request(req,res,next,fields=>{
        //判断注册时如果表单有空就重新输入
        if (fields.username===''||fields.password===''){
            res.status(500).render('success',{title: '用户名或密码不能为空！',url:'/reg',result:'请重新输入！'});
            return;
        }
        // 向数据库插入请求体的值
        // let date=currentDate.tz('Asia/Shanghai').format('YYYY-MM-DD HH:mm:ss')
        let date=currentDate.format('YYYY-MM-DD HH:mm:ss');
        regModel.create({
            ...fields,//将注册的账号和密码保存到数据库
            password:md5(fields.password),//将密码加密
            time:date//插入注册时间到数据库
        }, (err, data) => {
            if (err) {
                // 判断数据库中的用户名是否已存在
                if (err.code === 11000) {
                    // 捕获唯一键冲突的错误
                    res.status(500).render('success',{title: '用户名已存在，请选择不同的用户名',url:'/reg',result:'请重新注册！'});
                } else {
                    res.status(500).render('success',{title: '插入失败~',url:null,result:'信息添加失败！'});
                    console.log(err); // 如果增加报错就输出
                }
                return;
            }
            //设置响应体
            res.render('success',{title:"注册成功！！！",url:'/',result:'点击此处跳转登录页面！'})
        });
    })
});
// 点击登录跳转的路由
router.post('/create', function (req, res, next) {
    // 调用函数解析请求体
    request(req,res,next,fields=>{
        // 获取用户登陆输入的用户名和密码(请求体的账户和密码)
        let {username,password}=fields
        //判断登录的表单中是否为空
        if (username===''||password===''){
            res.status(500).render('success',{title: '用户名或密码不能为空！',url:'/login',result:'请重新输入！'});
            return;
        }
        //调用register_find函数查找用户是否存在
        find_model.register_find(regModel,res,username,password,data=>{
            //写入session
            req.session.username=data.username;
            req.session._id=data._id;
            //如果存在调用回调函数继续操作,否则在register_find函数中输出账号不存在
            res.status(200).render('success',{title: 'WellCome To Notes！！',url:'/create',result:'开始记事->'});
        });
    });
});
//退出登录路由
router.post('/exit',(req,res)=>{
    req.session.destroy(()=>{
        res.render('success',{title:'欢迎再次使用~',url:'/login',result:'退出成功'})
    });
});


// 暴漏模块
module.exports = router;